function conMayusculas(field) {
            field.value = field.value.toUpperCase()
}
function val_email(obj_origen,id_destino){
    
    //expresion regular
//    var b=/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/;
    var b = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    //comentar la siguiente linea si no se desea que aparezca el alert()//alert("Email " + (b.test(txt)?"":"no ") + "válido.");
     if (obj_origen ===''){
        document.getElementById(id_destino).innerHTML='Formato del Correo Electrónico inválido.';
     }
     else if (b.test(obj_origen)===false)
     {
        document.getElementById(id_destino).innerHTML='Formato del Correo Electrónico inválido.';
        obj_origen.focus();
     }
     else
     {
        //document.getElementById(id_destino).innerHTML='Su direccion de Correo no igual a la Registrada. Verifque';
        document.getElementById(id_destino).innerHTML='';
     }
    return b.test(obj_origen);//devuelve verdadero si validacion OK, y falso en caso contrario
}


function val(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla==32 || tecla==8) return true;
    patron =/[A-Za-z]/;  
    te = String.fromCharCode(tecla);
    return patron.test(te);
}

function valpassword(e) {
        
    var tecla;
    tecla = (document.all) ? e.keyCode : e.which;
    if(tecla == 8 || e.which == 0)
    {
        return true;
    }
    var patron;
    patron = /[abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789|@#~$%()=^*+[]{}-_]/;
    //patron = /\d/; //solo acepta numeros, mejor dicho, no acepta digitos (letras)
    //patron = /[0-9,.]/; //solo acepta numeros, puntos y comas
    var te;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}

function caracteres_restantes(id_origen,id_destino){
    var cantidad;
    var limite;
    var restante;
    obj_ori=document.getElementById(id_origen);
    obj_des=document.getElementById(id_destino);
    limite=obj_ori.getAttribute("maxlength");
    cantidad=(obj_ori.value.length);
    restante=limite-cantidad;
    obj_des.innerHTML='Caracteres Restantes: '+restante;
}

function validar_campo(id_campo,id_div_msj,msj){
    var retorno = false;
//    if ((document.getElementById(id_campo).value != '') && (document.getElementById(id_campo).value != '0')){ CAMBIADO POR MEJORAR
    if ((document.getElementById(id_campo).value != '')){
        document.getElementById(id_div_msj).innerHTML='';
        retorno = true; 
    }
    else{ 
    document.getElementById(id_div_msj).className="alert-danger";
    document.getElementById(id_div_msj).innerHTML=(retorno==false)?msj:'';
    }
    return retorno;
}

function val_checkbox(array_id_element,id_div_msj,msj){
    var retorno = false;
    for(var i in array_id_element)                        
        if(document.getElementById(array_id_element[i]).checked) 
            retorno = true;    
    document.getElementById(id_div_msj).innerHTML =(retorno == false)?msj:'';
    return retorno;
}


function pressTheEnterKey(e){
    var resp=false;
    if(e!=null)
        if(((document.all)?e.keyCode: e.which)==13)
            resp=true;    
    return resp;
} 

function validatePassWord(passWord){
 var acepNum=false;
 var acepCha=false;
 var acepEsp=false;
 var acepLen=false;
 var respFinal=false;
    if (/[0-9]/.test(passWord))
        acepNum=true;
    if (/[a-z]/.test(passWord)||/[A-Z]/.test(passWord))
        acepCha=true;
    if (/[|@#$%¿!¬()]/.test(passWord))
        acepEsp=true;
    if (passWord.length>5 && passWord.length<11)
        acepLen=true;
    if (acepNum==true && acepCha==true && acepEsp==true && acepLen==true)
        respFinal=true; 
    return respFinal;        
}

function validateTheBrowser(){
   var resp=false; 
   if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);  
       var ffversion=new Number(RegExp.$1) //capture x.x portion and store as a number  
        if (ffversion>=31) //12
            resp=true; 
    } 
    else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;  
        var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number  
        if (ieversion>=8) //8
            resp=true;  
    } //Note: userAgent in Opera9.24 WinXP returns: Opera/9.24 (Windows NT 5.1; U; en) userAgent in Opera 8.5 (identified as IE) returns: Mozilla/4.0 (compatible; //MSIE 6.0; Windows NT 5.1) Opera 8.50 [en] //userAgent in Opera 8.5 (identified as Opera) returns: Opera/8.50 (Windows NT 5.1; U) [en]     
    else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Opera/x.x or Opera x.x (ignoring remaining decimal places);  
        var oprversion=new Number(RegExp.$1) // capture x.x portion and store as a number  
        if (oprversion>=10) //10
            resp=true;            
    } 
    if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
         var cversion=new Number(RegExp.$1)
         if (cversion>=23) //25
             resp=true;                     
    }
    return resp;    
}

function changeTheObDeniedWritingImg(imgObjId){
    var objImg=document.getElementById(imgObjId);  
    if (objImg.className=='img_show'){
        objImg.setAttribute('title','Ocultar Panel');
        objImg.setAttribute('class','img_hide');
    }
    else{
        objImg.setAttribute('title','Mostrar Panel');
        objImg.setAttribute('class','img_show');
    }   
}

function FormatoTelefono(d){
    var patron_telef = new Array(4,3,3,3);
    var sep='-';
    var nums=true;
    var pat=patron_telef;
if(d.valant != d.value){
	val = d.value
	largo = val.length
	val = val.split(sep)
	val2 = ''
	for(r=0;r<val.length;r++){
		val2 += val[r]	
	}
	if(nums){
		for(z=0;z<val2.length;z++){
			if(isNaN(val2.charAt(z))){
				letra = new RegExp(val2.charAt(z),"g")
				val2 = val2.replace(letra,"")
			}
		}
	}
	val = ''
	val3 = new Array()
	for(s=0; s<pat.length; s++){
		val3[s] = val2.substring(0,pat[s])
		val2 = val2.substr(pat[s])
	}
	for(q=0;q<val3.length; q++){
		if(q ==0){
			val = val3[q]
		}
		else{
			if(val3[q] != ""){
				val += sep + val3[q]
				}
		}
	}
	d.value = val
	d.valant = val
	}
}

function FormatoFecha(d){
    var patron_fecha = new Array(2,2,4);
    var sep='-';
    var nums=true;
    var pat=patron_fecha;
if(d.valant != d.value){
	val = d.value
	largo = val.length
	val = val.split(sep)
	val2 = ''
	for(r=0;r<val.length;r++){
		val2 += val[r]	
	}
	if(nums){
		for(z=0;z<val2.length;z++){
			if(isNaN(val2.charAt(z))){
				letra = new RegExp(val2.charAt(z),"g")
				val2 = val2.replace(letra,"")
			}
		}
	}
	val = ''
	val3 = new Array()
	for(s=0; s<pat.length; s++){
		val3[s] = val2.substring(0,pat[s])
		val2 = val2.substr(pat[s])
	}
	for(q=0;q<val3.length; q++){
		if(q ==0){
			val = val3[q]
		}
		else{
			if(val3[q] != ""){
				val += sep + val3[q]
				}
		}
	}
	d.value = val
	d.valant = val
	}
}

var hex_chr = "0123456789abcdef";
function rhex(num)
{
  str = "";
  for(j = 0; j <= 3; j++)
    str += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) +
           hex_chr.charAt((num >> (j * 8)) & 0x0F);
  return str;
}

/*
 * Convert a string to a sequence of 16-word blocks, stored as an array.
 * Append padding bits and the length, as described in the MD5 standard.
 */
function str2blks_MD5(str)
{
  nblk = ((str.length + 8) >> 6) + 1;
  blks = new Array(nblk * 16);
  for(i = 0; i < nblk * 16; i++) blks[i] = 0;
  for(i = 0; i < str.length; i++)
    blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8);
  blks[i >> 2] |= 0x80 << ((i % 4) * 8);
  blks[nblk * 16 - 2] = str.length * 8;
  return blks;
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally 
 * to work around bugs in some JS interpreters.
 */
function add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left
 */
function rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * These functions implement the basic operation for each round of the
 * algorithm.
 */
function cmn(q, a, b, x, s, t)
{
  return add(rol(add(add(a, q), add(x, t)), s), b);
}
function ff(a, b, c, d, x, s, t)
{
  return cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function gg(a, b, c, d, x, s, t)
{
  return cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function hh(a, b, c, d, x, s, t)
{
  return cmn(b ^ c ^ d, a, b, x, s, t);
}
function ii(a, b, c, d, x, s, t)
{
  return cmn(c ^ (b | (~d)), a, b, x, s, t);
}

/*
 * Take a string and return the hex representation of its MD5.
 */
function calcMD5(str)
{
  x = str2blks_MD5(str);
  a =  1732584193;
  b = -271733879;
  c = -1732584194;
  d =  271733878;

  for(i = 0; i < x.length; i += 16)
  {
    olda = a;
    oldb = b;
    oldc = c;
    oldd = d;

    a = ff(a, b, c, d, x[i+ 0], 7 , -680876936);
    d = ff(d, a, b, c, x[i+ 1], 12, -389564586);
    c = ff(c, d, a, b, x[i+ 2], 17,  606105819);
    b = ff(b, c, d, a, x[i+ 3], 22, -1044525330);
    a = ff(a, b, c, d, x[i+ 4], 7 , -176418897);
    d = ff(d, a, b, c, x[i+ 5], 12,  1200080426);
    c = ff(c, d, a, b, x[i+ 6], 17, -1473231341);
    b = ff(b, c, d, a, x[i+ 7], 22, -45705983);
    a = ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
    d = ff(d, a, b, c, x[i+ 9], 12, -1958414417);
    c = ff(c, d, a, b, x[i+10], 17, -42063);
    b = ff(b, c, d, a, x[i+11], 22, -1990404162);
    a = ff(a, b, c, d, x[i+12], 7 ,  1804603682);
    d = ff(d, a, b, c, x[i+13], 12, -40341101);
    c = ff(c, d, a, b, x[i+14], 17, -1502002290);
    b = ff(b, c, d, a, x[i+15], 22,  1236535329);    

    a = gg(a, b, c, d, x[i+ 1], 5 , -165796510);
    d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
    c = gg(c, d, a, b, x[i+11], 14,  643717713);
    b = gg(b, c, d, a, x[i+ 0], 20, -373897302);
    a = gg(a, b, c, d, x[i+ 5], 5 , -701558691);
    d = gg(d, a, b, c, x[i+10], 9 ,  38016083);
    c = gg(c, d, a, b, x[i+15], 14, -660478335);
    b = gg(b, c, d, a, x[i+ 4], 20, -405537848);
    a = gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
    d = gg(d, a, b, c, x[i+14], 9 , -1019803690);
    c = gg(c, d, a, b, x[i+ 3], 14, -187363961);
    b = gg(b, c, d, a, x[i+ 8], 20,  1163531501);
    a = gg(a, b, c, d, x[i+13], 5 , -1444681467);
    d = gg(d, a, b, c, x[i+ 2], 9 , -51403784);
    c = gg(c, d, a, b, x[i+ 7], 14,  1735328473);
    b = gg(b, c, d, a, x[i+12], 20, -1926607734);
    
    a = hh(a, b, c, d, x[i+ 5], 4 , -378558);
    d = hh(d, a, b, c, x[i+ 8], 11, -2022574463);
    c = hh(c, d, a, b, x[i+11], 16,  1839030562);
    b = hh(b, c, d, a, x[i+14], 23, -35309556);
    a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
    d = hh(d, a, b, c, x[i+ 4], 11,  1272893353);
    c = hh(c, d, a, b, x[i+ 7], 16, -155497632);
    b = hh(b, c, d, a, x[i+10], 23, -1094730640);
    a = hh(a, b, c, d, x[i+13], 4 ,  681279174);
    d = hh(d, a, b, c, x[i+ 0], 11, -358537222);
    c = hh(c, d, a, b, x[i+ 3], 16, -722521979);
    b = hh(b, c, d, a, x[i+ 6], 23,  76029189);
    a = hh(a, b, c, d, x[i+ 9], 4 , -640364487);
    d = hh(d, a, b, c, x[i+12], 11, -421815835);
    c = hh(c, d, a, b, x[i+15], 16,  530742520);
    b = hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a = ii(a, b, c, d, x[i+ 0], 6 , -198630844);
    d = ii(d, a, b, c, x[i+ 7], 10,  1126891415);
    c = ii(c, d, a, b, x[i+14], 15, -1416354905);
    b = ii(b, c, d, a, x[i+ 5], 21, -57434055);
    a = ii(a, b, c, d, x[i+12], 6 ,  1700485571);
    d = ii(d, a, b, c, x[i+ 3], 10, -1894986606);
    c = ii(c, d, a, b, x[i+10], 15, -1051523);
    b = ii(b, c, d, a, x[i+ 1], 21, -2054922799);
    a = ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
    d = ii(d, a, b, c, x[i+15], 10, -30611744);
    c = ii(c, d, a, b, x[i+ 6], 15, -1560198380);
    b = ii(b, c, d, a, x[i+13], 21,  1309151649);
    a = ii(a, b, c, d, x[i+ 4], 6 , -145523070);
    d = ii(d, a, b, c, x[i+11], 10, -1120210379);
    c = ii(c, d, a, b, x[i+ 2], 15,  718787259);
    b = ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a = add(a, olda);
    b = add(b, oldb);
    c = add(c, oldc);
    d = add(d, oldd);
  } 
  return rhex(a) + rhex(b) + rhex(c) + rhex(d); 
}
function addHeader(id, rHeader){
 $(id).load("/h"+rHeader+"-");
}